<?php
/**
 * Created by PhpStorm.
 * User: 郑合达
 * Date: 2019/3/12
 * Time: 17:22
 */

namespace app\admin\controller;

//定时访问，检查设备是否出入栅栏
use app\model\EnclosureLogModel;
use app\model\EnclosureModel;
use app\model\EquipmentModel;
use think\Controller;
use app\model\DeviceInfoModel;
class Deviceinfo extends Controller
{

    /**
     * 1. 查询设备位置信息
     */
    public function info(){
        //所有设备号
        $gerEqu=DeviceInfoModel::alias('de')//设备表（实时传输的有激活的设备）
            ->field('de.*')
            ->where('de.online',1)//在线设备
//            ->where('de.imei','353520180319890')
            ->join('gps_equipment eq','de.imei=eq.name')//所有设备（包括虚拟设备）
            ->where('eq.expire_time','>',time())//过期设备不参与
            ->field('eq.nickname')//设备昵称
            ->join('gps_app_user u','eq.equ_user=u.id')//用户
            ->field('u.phone,u.id as user_id')
            ->select();
//        dump($gerEqu->toArray());die();
        foreach ($gerEqu as $k=>$v){

            $where=['user_id'=>$v->user_id,'state'=>1];//启用的围栏
            $getEnc=EnclosureModel::where($where)->select()->toArray();
//            dump($getEnc);die();
            //栅栏----0不在任何围栏内，-1未设置栅栏 ，其他正整数为栅栏id
            $enc_id=0;//默认0
            $enc_name='围栏外';//默认0
            if ($getEnc){//有栅栏
                foreach ($getEnc as $key=>$value){
                    $fP1Lon=$value['bdlng'];//经度--栅栏中心
                    $fP1Lat=$value['bdlat'];//纬度--栅栏中心
                    //        -》
                    $fP2Lon=$v->bdlongitude;//经度--设备坐标
                    $fP2Lat=$v->bdlatitude;//纬度--设备坐标
                    $distance=distanceBetween($fP1Lat, $fP1Lon, $fP2Lat, $fP2Lon);//距离（米）
                    //围栏昵称
                    if ($distance<=$value['radius']){//栅栏内（距离小于半径）
                        $enc_id=$value['id'];//该围栏内
                        $enc_name=$value['en_name'];//该围栏内
                        break;
                    }
                }
            }else{
                $enc_id=-1;
                $enc_name="无围栏";
            }
            $time=$v->updateTime/1000;//时间
            $insert=[
                'imei'=> $v->imei,//设备号（IMEI）
                'place'=>$v->address,//位置
                'bdlng'=>$v->bdlatitude,//经度
                'bdlat'=>$v->bdlongitude,//纬度
                'enc_id'=>$enc_id, //栅栏id
                'enc_name'=>$enc_name,//栅栏昵称
                'addtime'=>(int)$time,//时间
            ];
            //最近一次出入记录
            $get_encl_log=EnclosureLogModel::where('imei',$v->imei)->order('addtime','desc')->find();
//            dump($get_encl_log->toArray());die();
            if(!$get_encl_log){//第一次记录
                //栅栏对比
                $insert['code']=0;
                $insert['data']='初始点';
                EnclosureLogModel::insert($insert);//添加出入栅栏记录（为起始点）
            }else{

                if ($enc_id!=$get_encl_log->enc_id){//有出入栅栏行为（包括跨栅栏）
                    if ($enc_id==0){
                        $insert['code']=1;
                        $insert['data']='【'.$get_encl_log->enc_name.'】到围栏外';
                        $insert['num']=$get_encl_log->num+1;
                    }elseif($enc_id==-1){
                        $insert['code']=0;
                        $insert['data']='无围栏';
                        $insert['num']=$get_encl_log->num;
                    }else{
                        $insert['code']=2;
                        $insert['data']='【'.$get_encl_log->enc_name.'】进入围栏【'.$insert['enc_name'].'】';
                        $insert['num']=$get_encl_log->num+1;
                    }
//                    dump($enc_id);die();
                    if ($enc_id!=-1){
                        $time=date('Y年m月d日H:i',$time);
                        $nickname=$v->nickname;//设备号（昵称）
                        $send=sendMsg_dx($v->phone,$nickname,$time,$insert['data'],$insert['enc_name']);
//                        dump($send);
                        $insert['aly_mess']=$send['Message'];
//                        dump($v->phone.$v->nickname.$time.$insert['data'].$insert['enc_name']);die();
                    }
                    EnclosureLogModel::insert($insert);//添加出入栅栏记录
                }
            }
//            EnclosureLogModel::insert($insert);//添加出入栅栏记录
        }

    }

    /**
     * @param $url   接口连接的地址
     * @return mixed
     *  转接接口的方法
     */
    public function curl($url){
        $ch = curl_init();
        //设置选项，包括URL
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_HEADER, 0);

        //执行并获取HTML文档内容
        $output = curl_exec($ch);

        //释放curl句柄
        curl_close($ch);

        $data=json_decode($output,true);//$data就是最终的数据 而且已经转换成了数组
        return $data;
    }
    public function device(){
        return view('index');
    }
}